import React from "react";

export const initialState = {
  "profile": {
      "name": "周顺利",
      "about": "懂 OpenStack, Docker, 公有云的Java Web全栈开发工程师",
      "email": "zsl6658@126.com",
      "mobile": "17791561980",
      "github": "https://github.com/shunliz",
      "home": "",
      "workPlace": "西安",
      "positionTitle": "高级全栈开发工程师",
      "workExpYear": 15
  },
  "avatar": {
      "url": "avatar.jfif",
      "display": true,
      "circle": true,
      "theme": "1"
  },
  "skillList": [
      {
          "name": "Openstack",
          "desc": "精通Openstack，熟悉Nova, Heat, Cinder, Zun源码级开发",
          "level": 5
      },
      {
          "name": "Java Web Full Stack",
          "desc": "熟练 SpringBoot, SpringCloud后端技术，\n并且熟练Vue，React等前端框架。",
          "level": 4
      },
      {
          "name": "Docker, K8S",
          "level": 4,
          "desc": "精通Docker，K8S容器相关技术，网络，存储插件。"
      }
  ],
  "educationList": [
      {
          "time": [
              "2004.09",
              "2007.04"
          ],
          "school": "西北工业大学",
          "major": "计算机科学",
          "degree": "硕士"
      },
      {
          "school": "陕西师范大学",
          "time": [
              "1999.9",
              "20003.6"
          ],
          "major": "教育技术",
          "degree": "本科"
      }
  ],
  "awardList": [
      {
          "info": "英语 CET6，可作为工作语言",
          "time": "2001"
      },
      {
          "info": "AWS证书",
          "time": "2019,9"
      },
      {
          "info": "Openstack Zun核心开发者",
          "time": "2017-今"
      }
  ],
  "workExpList": [
      {
          "company": "汇丰",
          "department": "DevOps",
          "time": [
              "2018.08",
              "2021.9"
          ],
          "desc": "带领西安团队，和各个国家的干系人沟通分析需求，管理开发进度，管理干系人期望，\n解决关键技术问题，有力的支持了4000人的组织的DevOps转型。\n1.构建了两个关键报表，收集和展示组织改进数据，宣传DevOps理念，推动组织DevOps转型。\n2.开发了3套自动化软件工具，帮助组织推进DevOps转型，提高组织软件发布速度(CR Minion)，风险管理速(Concord)和问题处理速度(Inspire)。\n很好的管理干系人的期望，得到干系人的认可，小组得到了很好的发展。",
          "position": "高级技术专家"
      },
      {
          "company": "烽火通信",
          "department": "大数据部",
          "time": [
              "2015.08",
              "2018.3"
          ],
          "desc": "基于开源OpenStack搭建企业私有云，负责Openstack Nova， Keystone， Heat， Ceilometer, Ironic和底层虚拟化技术（libvirt，qemu，kvm）模块。 \n1.带领13~15人团队开发了基于Openstack的私有云平台，应用到多个从20多台到1000多台机器不等的数据中心。\n支撑了各种操作系统和应用线上稳定运行，有力的支撑了某省政务云系统。\n2.组建团队，制定开发计划，组织管理项目进度，保证版本按时发布。 \n3.全面掌握企业IT系统中的计算/网络/存储技术，以及对应的虚拟化技术。\n参与社区贡献，为nova, heat, zun项目都有提交patch。Openstack zun项目核心开发者。",
          "position": "技术经理"
      },
      {
          "company": "IBM",
          "department": "前端实习生",
          "time": [
              "2013.05",
              "2015.08"
          ],
          "desc": "Openstack 云计算相关领域的软件开发工作. 开发和维护IBM ICM资源调度模块。该模块在openstack调度器的基础上，结合IBM调度器的主机数据，增强了openstack调度功能，实现了更丰富和高级调度功能",
          "position": "软件开发工程师"
      },
      {
          "time": [
              "2011.8",
              "2013.5"
          ],
          "company": "华为",
          "desc": "在云计算技术预研部门，负责华为云平台上的SaaS系统开发和维护。实现了类似WebQQ的桌面管理系统，通过Web桌面实现对虚拟化的应用的管理和发放。 实现了类似应用商店和云盘等功能。大部分代码都是基于Jquery等初级类库实现了先关前台模块，直接操作DOM等，没有借助ExtJS等类似的现成库。",
          "position": "软件开发工程师"
      },
      {
          "time": [
              "2007.4",
              "2011.4"
          ],
          "company": "华三",
          "desc": "负责智能网络管理系统的开发和维护, 主要工作集中在配置管理台的开发和维护。\n基于JSF+Spring+Hibernate+db的具体功能模块的开发，熟练掌握了J2EE开发，从前端页面，到业务逻辑处理，到数据库的设计和操作整套流程；",
          "position": "软件开发工程师"
      }
  ],
  "projectList": [],
  "qualifications": [
      {
          "name": "》15年的软件开发和管理工作经验\n》精通Openstack,Docker,K8S, Zun项目的核心开发者。\n》作为技术骨干参与国内知名厂商的Openstack云平台从0-1的搭建过程。\n》熟悉DevOps，支持过4000人的组织的DevOps转型。\n》精通J2EE Web开发技术，如Spring boot, Spring cloud, React, Vue等。\n》扎实的网络，数据结构，编译原理，数据库等计算机专业基础知识\n》思维敏捷，思路清晰。做事认真负责，为人踏实，积极上进"
      }
  ]
};

export type State = typeof initialState;

type ACTIONTYPE = { type: "save"; payload: any } | { type: "restore" };

interface AppContextInterface {
  state: State;
  dispatch: React.Dispatch<ACTIONTYPE>;
}

export const ResumeContext = React.createContext<AppContextInterface>({
  state: initialState,
  dispatch: (action) => action,
});

export function reducer(state: State, action: ACTIONTYPE): State {
  switch (action.type) {
    case "save":
      localStorage.setItem(
        "refuseme_data",
        JSON.stringify({ ...state, ...action.payload })
      );
      return { ...state, ...action.payload };
    case "restore":
      localStorage.removeItem("refuseme_data");
      return initialState;
    default:
      throw new Error();
  }
}
